package lambda;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;

// 静态常量，抽象方法，默认方法，静态方法（不能被重写）
interface Calculator{
	int add(int a, int b);
}
public class InterfaceDemo {
	public static void main(String[] args) {
		// 匿名内部类
		Calculator c = new Calculator() {
			@Override
			public int add(int a, int b) {
				return a + b;
			}
		};
		System.out.println(c.add(1, 2));
		// lambda: 给方法实现,有且只有一个抽象方法的接口才可以使用lambda 
		Calculator c2 = (a,b) -> a + b;
		System.out.println(c2.add(1, 2));
		
		// 返回长度不可变的列表
		List<String> list = Arrays.asList("abc","def","www","hhhh");
		
		list.forEach(new Consumer<String>() {
			@Override
			public void accept(String t) {
				System.out.println(t);
			}
		});
		// lambda格式： (参数) -> {方法体}
		list.forEach((t)->System.out.println(t));
		
		// 排序
		list.sort(new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return o2.compareTo(o1);
			}
		});
		System.out.println(list);
		
		list.sort((o1,o2) -> o1.compareTo(o2));
		System.out.println(list);
	}
}
